/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package EJB;

import Entidades.*;
import java.rmi.RemoteException;
import java.util.List;
import javax.ejb.Remote;

/**
 *
 * 
 */
@Remote
public interface AgenciaViagemManagerRemote {
    /** Procura se existe um Administrador cadastrado na tabela e retorna true se achar
     *  caso contrário retorna false
     * @param login
     * @param senha
     * @return Admin
     * @throws RemoteException
     */
    public Admin validaAdmin(String login,String senha)throws RemoteException;
    /** Procura se existe uma Compania cadastrada na tabela e retorna a compania se achar
     *  caso contrário retorna null
     *
     * @param login
     * @param senha
     * @return Compania
     * @throws RemoteException
     */
    public Compania validaCompania(String login,String senha)throws RemoteException;
    /**
     * Procura se existe um Cliente cadastrado na tabela e retorna o cliente se achar
     *  caso contrário retorna null
     * @param login
     * @param senha
     * @return Cliente
     */
    public Cliente validaCliente(String login,String senha);
    /**
     * Cadastra um cliente na tabela
     * @param c
     * @return boolean
     */
    public boolean cadastraCliente(Cliente c);
    /**
     * Cadastra uma rota na tabela
     * @param r
     * @return boolean
     */
    public boolean cadastraRota(Entidades.Rota r);
    /**
     * Cadastra uma passagem na tabela
     * @param p
     * @return boolean
     */
    public boolean cadastraPassagem(Entidades.Passagem p);
    /**
     * Cadastra uma compania na tabela
     * @param c
     * @return boolean
     */
    public boolean cadastraCompania(Entidades.Compania c);
    /**
     * insere a compania e a rota na tabela rotahascompania
     * @param c
     * @param r
     */

    public void inserirRotaHasCompania(Compania c, Rota r);

    
    /** remove compania da tabela
     *
     * @param c
     */
    public void removerCompania(Compania c);
    /**
     * Procura uma passagem pelo id e retorna se encontrar
     * @param id
     * @return Paassagem
     */
    public Passagem getPassagem(int id);
    /**
     * Procura a rota que possui a origem e o destino passados por parâmetro
     * @param origem
     * @param destino
     * @return Rota
     */
    public Rota getRota(String origem, String destino);
    /**
     * Procura as rotas que possuem cadastradas o objeto companianome
     * @param nomeCompania
     * @return List
     */
    public List getAllRota(Compania nomeCompania);
    /**
     * Método utilizado para retornar todas as companias existentes na lista de Companias
     * @return List
     */
    public List getAllCompanias();
    /**
     * Método utilizado para retornar todas as companias que tem a rota passada por parâmetro
     * @param nomeRota
     * @return List
     * @throws RemoteException
     */
    public List getCompanias(Rota nomeRota) throws RemoteException;
    /**
     * Pesquisas os passageiros de uma determinada compania conforme a Rota
     * @param nomeRota
     * @param nomeCompania
     * @return List
     * @throws RemoteException
     */
    public List getPassageiros(Rota nomeRota,Compania nomeCompania) throws RemoteException;
    /**
     * Transforma um objeto o em XML
     * @param o
     * @return String
     */
    public String TransfXML(Object o);
    /**
     * Método que realiza a busca da rota pela origem e destino e retorna o nome da rota e sua descrição
       para o celular 
     * @param origem
     * @param destino
     * @return String
     */
    public String getRotaME(String origem,String destino);
    /**
     * Pega todas as origens das rotas
     * @return List
     */
    public List getAllOrigem();
    /**
     * Pega todos os destinos das rotas
     * @return List
     */
    public List getAllDestino();

}
